以下有命運石之門微雷,不介意再繼續看下去
在Day.2 我們用 Git 模擬了世界線跳躍,可以自由切換不同版本的程式碼,就像岡部倫太郎在各種平行世界之間來回穿梭
但是光能跳是不夠的,如果跳到的世界線是真由理已經倒下,或是紅莉栖不在的世界呢?
如同透過世界線變動率探測儀,能查看世界線收束的狀態數值。我們可以利用建立一個「世界線檢查機構」在每次存檔後,自動驗證世界線的安全性,而這就是 CI 的用武之地。
CI為持續整合(continuous integration),CD(continuous delivery)為持續部署
當寫好程式碼後透過自動化工具測試、驗證、部署的方法,以減少人工反覆步驟和確保程式品質再到自動部署至平台
由於在上篇有提到GitHub,所以我們就直接使用GitHub提供的自動化平台GitHub Actions,來實作自動化的過程,如果還沒有帳號的去申請一下吧
GitHub Actions 是 GitHub 提供的自動化平台,可以幫你在特定事件(像 push、pull request)發生時,觸發你撰寫的程式指定內容
官方有提供更詳細的介紹和指令(官方文件)
一個Workflow即是個流水線,裡面包含多個Job,而每個Job又能拆成一連串的Step去執行
這邊就來實際演練一下,讓我們來對世界線做檢查吧
首先,先在本地建立個專案資料夾,並建立這些檔案
your-repo/
├─ app.py
├─ requirements.txt
├─ tests/
│ └─ test_worldline.py
└─ .github/
└─ workflows/
└─ ci.yml
#app.py
print('hello world')
#requirements.txt
pytest
#tests/test_worldline.py
mayuri_alive = True
kurisu_alive = True
future_intact = True
def test_mayuri_alive():
assert mayuri_alive, "真由理我一定會救妳!"
def test_kurisu_alive():
assert kurisu_alive, "紅莉栖已經不在了"
def test_future_intact():
assert future_intact, "未來的世界已崩壞!"
#.github/workflows/ci.yml
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 下載世界線紀錄(程式碼)
uses: actions/checkout@v3
- name: 安裝 Python
uses: actions/setup-python@v4
with:
python-version: '3.13'
- name: Cache pip
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: 安裝依賴
run: pip install -r requirements.txt
- name: 啟動世界線檢查(測試)
run: pytest -q
使用git建立世界線存檔
git init
git add .
git commit -m "Day3: CI minimal pipeline + worldline checks"
接著我們要上傳到Github,也就是世界線檢查機構
首先要先在Github建立個專案
到個人主頁點擊新增
專案名稱隨便取,這邊以Day3為例,之後按建立
之後到專案頁面複製網址
回到terminal,準備將本地世界線存檔跟世界線檢查機構建立連接
git remote add LinkStart https://github.com/hacuba7777/Day3
git remote
檢查是否有LinkStart此連接橋梁
如果有出現,恭喜成功跟世界線檢查機構通訊
接著把世界線存檔丟給機構吧
這邊為了避免搞混可以先檢查目前所在的分支(世界線)
git branch
像我輸出是*master,如果你是main或其他的記得去修正 .github/workflows/ci.yml
確認完目前所在分支(世界線)後,再跟機構通訊,並同步統一世界線
git push LinkStart master
如果沒意外,現在能在機構看見你的世界線存檔有的資料,並且這邊會有綠色勾勾
也能到GitHub → Actions看workflow
綠色勾勾:代表世界線穩、測試過關。
若紅色叉叉:有步驟出錯,回頭檢查看錯誤訊息
正常通過後,改tests/test_worldline.py
mayuri_alive = False
再push一次,你會看到紅色叉叉(代表世界線檢查機構有在工作)
點進detail會看見錯誤訊息
這個世界線的真由理又......,這時候就回頭去修正世界線內容,再push給機構檢查
直到看見你渴望的未來吧